//package me.boot.db.mybatis.handler;
//
//import cn.hutool.core.util.StrUtil;
//import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
//import lombok.extern.slf4j.Slf4j;
//import me.boot.common.constant.DbConst;
//import me.boot.common.context.ContextUtil;
//import me.boot.common.data.model.UserInfo;
//import me.boot.db.mybatis.template.entity.BizEntity;
//import me.boot.db.mybatis.template.entity.Entity;
//import org.apache.ibatis.reflection.MetaObject;
//import org.springframework.stereotype.Component;
//
//import java.time.LocalDateTime;
//
///**
// * 自动填充时间字段
// */
//@Slf4j
//@Component
//public class AutoMetaObjectHandler_BAK implements MetaObjectHandler {
//
//    @Override
//    public void insertFill(MetaObject metaObject) {
//        if (!isEntity(metaObject)) {
//            return;
//        }
//        log.debug("插入时，自动填充...");
//
//        this.strictInsertFill(metaObject, DbConst.PROPERTY_CREATE_BY, String.class, getUserIdAndName());
//        this.strictInsertFill(metaObject, DbConst.PROPERTY_UPDATE_BY, String.class, getUserIdAndName());
//        this.strictInsertFill(metaObject, DbConst.PROPERTY_CREATE_TIME, LocalDateTime.class, LocalDateTime.now());
//        this.strictInsertFill(metaObject, DbConst.PROPERTY_UPDATE_TIME, LocalDateTime.class, LocalDateTime.now());
//
//        if (isBizEntity(metaObject)) {
//            UserInfo userInfo = getUserInfo();
//            if (metaObject.hasGetter(DbConst.PROPERTY_TENANT_ID)) {
//                this.strictInsertFill(metaObject, DbConst.PROPERTY_TENANT_ID, Long.class, userInfo.getTenantId());
//            }
//            if (metaObject.hasGetter(DbConst.PROPERTY_COMPANY_ID)) {
//                this.strictInsertFill(metaObject, DbConst.PROPERTY_COMPANY_ID, Long.class, userInfo.getCompanyId());
//            }
//            if (metaObject.hasGetter(DbConst.PROPERTY_DEPARTMENT_ID)) {
//                this.strictInsertFill(metaObject, DbConst.PROPERTY_DEPARTMENT_ID, Long.class, userInfo.getDepartmentId());
//            }
//            if (metaObject.hasGetter(DbConst.PROPERTY_USER_ID)) {
//                this.strictInsertFill(metaObject, DbConst.PROPERTY_USER_ID, Long.class, userInfo.getId());
//            }
//        }
//    }
//
//    @Override
//    public void updateFill(MetaObject metaObject) {
//        if (!isEntity(metaObject)) {
//            return;
//        }
//
//        log.debug("更新时，自动填充...");
//        this.strictUpdateFill(metaObject, DbConst.PROPERTY_UPDATE_BY, String.class, getUserIdAndName());
//        this.strictUpdateFill(metaObject, DbConst.PROPERTY_UPDATE_TIME, LocalDateTime.class, LocalDateTime.now());
//
//        if (isBizEntity(metaObject)) {
//
//        }
//    }
//
//    private String getUserIdAndName() {
//        UserInfo userInfo = getUserInfo();
//        if (userInfo != null) {
//            return StrUtil.format("{}/{}", userInfo.getName(), userInfo.getId());
//        }
//        return null;
//    }
//
//    private UserInfo getUserInfo() {
//        return ContextUtil.getUser();
//    }
//
//    private static boolean isEntity(MetaObject metaObject) {
//        return metaObject.getOriginalObject() instanceof Entity;
//    }
//
//    private static boolean isBizEntity(MetaObject metaObject) {
//        return metaObject.getOriginalObject() instanceof BizEntity;
//    }
//}
